/************************************************************************************
**                                                                                 **
**                               mcHF QRP Transceiver                              **
**                             K Atanassov - M0NKA 2014                            **
**                                                                                 **
**---------------------------------------------------------------------------------**
**                                                                                 **
**  File name:                                                                     **
**  Description:                                                                   **
**  Last Modified:                                                                 **
**  Licence:		For radio amateurs experimentation, non-commercial use only!   **
************************************************************************************/

#ifndef __IIR_2_3K
#define __IIR_2_3K
//
// Filter designed 20140915 by C. Turner, KA7OEI using MatLAB fdatools
//
// NOTE:
//	- IIR structure is Lattice Autoregressive Moving-Average (ARMA)
//	- ARM FIR/IIR algorithms require time reverse-order coefficients!!!
//
//
//	Example of the nominal 1412 Hz center-frequency Filter:
//
//	10th order Elliptic bandpass filter
//	Fstop:  200, 3750 Hz
//	Fpass:  300, 2525 Hz
//	-6dB points:  291, 2590 Hz
//	-20dB points:  266, 2838 Hz
//	-40dB points:  225, 3330 Hz
//	-60dB points:  200, 3730 Hz
//
#define NCoef 10
const uint16_t IIR_2k3_numStages = NCoef;
//
const float IIR_2k3_1k412_pkCoeffs[] =
{
		0.8150667298995,
		-0.9721591267051,
		0.9847118224243,
		-0.9839988541838,
		0.9838281881105,
		-0.9815242524549,
		0.9971318399171,
		-0.9983328660965,
		0.9999336336785,
		-0.9991491302356
};

const float IIR_2k3_1k412_pvCoeffs[] =
{
		-0.0009352029266732,
		-0.00223210057011,
		-0.00167226466426,
		-0.001324030313793,
		-0.0002491632461717,
		-9.963510771577e-05,
		2.047997293572e-05,
		1.704399678878e-06,
		-2.73975871018e-08,
		-5.176178131949e-10,
		4.514496524007e-12
};
//
// 1275Hz Center Frequency (-150 Hz)
//
const float IIR_2k3_1k275_pkCoeffs[] =
{
		0.8150297111565,
		-0.9755300338538,
		0.9856048639428,
		-0.986862036546,
		0.9820274013335,
		-0.9894613830285,
		0.9992318334671,
		-0.9996182936342,
		0.9999846921936,
		-0.9997893042029
};

const float IIR_2k3_1k275_pvCoeffs[] =
{
		-0.0008629800024768,
		-0.002088828723687,
		-0.001638421586164,
		-0.001319062738806,
		-0.0002924293725428,
		-0.000120219391724,
		1.042957298006e-05,
		4.763716421885e-07,
		-1.658600735921e-09,
		-3.104156688638e-11,
		6.498111510683e-14
};
//
// 1562Hz Center Frequency (+150 Hz)
//
const float IIR_2k3_1k562_pkCoeffs[] =
{
		0.815035778652,
		-0.968392209798,
		0.9839479808625,
		-0.9805921311165,
		0.9848856528719,
		-0.9757814634835,
		0.9943393673738,
		-0.9958998920353,
		0.9998579380532,
		-0.9980617018373
};

const float IIR_2k3_1k562_pvCoeffs[] =
{
		-0.0008745670346933,
		-0.00209766001328,
		-0.001593471761736,
		-0.00125021819334,
		-0.0002086594347847,
		-7.891725779191e-05,
		3.000562411348e-05,
		3.262005880404e-06,
		-1.380721154493e-07,
		-2.591851741042e-09,
		5.311760916098e-11
};
//
// 1712Hz Center Frequency (+300 Hz)
//
const float IIR_2k3_1k712_pkCoeffs[] =
{
		0.8150107551958,
		-0.9642539310533,
		0.9832913716802,
		-0.9767893262143,
		0.9854816991321,
		-0.970971129132,
		0.9915326057926,
		-0.992212892242,
		0.9997548213903,
		-0.9965220735262
};

const float IIR_2k3_1k712_pvCoeffs[] =
{
		-0.0008274028987876,
		-0.001990793497706,
		-0.001523888403312,
		-0.001181288457431,
		-0.0001650304437129,
		-5.725854342353e-05,
		3.918244629932e-05,
		4.768142924577e-06,
		-4.187671678868e-07,
		-7.884338472895e-09,
		3.029800602029e-10
};

#endif
